using System.Collections.Generic;
using ShouldIt.Core;

namespace ShouldIt.Clr.Fluent
{
    public class ShouldEnumerableBase<T, TShould> : ShouldBase<TShould, IEnumerable<T>, BeEnumerable<T>> where TShould : ShouldEnumerableBase<T, TShould>
    {
        public ShouldEnumerableBase(IEnumerable<T> target, IAssertProvider assertProvider) : base(target, assertProvider) { }

        public Contain<T, TShould> Contain
        {
            get { return new Contain<T, TShould>(this, assertProvider); }
        }

        public Count<T, TShould> Count
        {
            get { return new Count<T, TShould>(this, assertProvider); }
        }
    }

    public class ShouldEnumerable<T> : ShouldEnumerableBase<T, ShouldEnumerable<T>>
    {
        public ShouldEnumerable(IEnumerable<T> target, IAssertProvider assertProvider) : base(target, assertProvider) { }
    }
}